home *** CD-ROM | disk | FTP | other *** search
/ United Public Domain Gold 2 / United Public Domain Gold 2.iso / utilities / pu309.dms / pu309.adf / Satellite1 / PREDICTION (.txt) < prev    next >
AmigaBASIC Source Code  |  1990-09-29  |  9KB  |  322 lines

  1. ' PREDICTION 
  2. ' First Amiga version by G3WDI
  3. ' Added to by A Hewat G8NTH
  4.  
  5. ' Last mod 26/09/88 by ACH
  6.  
  7. '* this program needs to be up dated regularly 
  8. '* to put in new elements STOP the program 
  9. '* and type LIST keps: 
  10. '* the order of the data items is given at the end 
  11. '* It is important to remember the three ,0 after the day decimal day
  12. '* Also important is the ,0 after the Mean Motion 
  13.  
  14.  
  15.  
  16.  
  17.   DIM T$(20),S$(40),I$(40),C(3,2):P=0
  18. DEFDBL A-Z
  19.  
  20. C8$=CHR$(10)+CHR$(10)+CHR$(10)+CHR$(10)
  21. 50 C9$=CHR$(12)+CHR$(7):PRINT C9$
  22. PRINT "AMSAT ORBITAL PREDICTION PROGRAM"
  23. PRINT  "COPYRIGHT 1980  DR. TOM CLARKE W3IWI"
  24. PRINT  "TRANSLATED FOR AMSAT UK BY G3WDI"
  25. PRINT "COPYRIGHT AMSAT-UK. 1988"
  26. REM SET STARTING DATA
  27. INPUT "start year = ",Y:Y=Y/100:Y=INT(100* (Y-INT(Y)) + 0.1)
  28. IF Y/4=INT(Y/4) THEN F9=1 :ELSE F9=0
  29. INPUT "     month = ",M
  30. INPUT "       day = ",d
  31.  DEF FNT$(d)= CHR$(48+INT(d/10))+CHR$(48+d-10*INT(d/10))
  32. T$=FNT$(d)+"/"+FNT$(M)+"/"+FNT$(Y)+" at "
  33. RESTORE daysofyear:
  34. FOR I= 1 TO M:READ D9:NEXT:D8=d+D9
  35. IF M>2 THEN D8=D8+F9 :PRINT "    day = ",D8
  36. PRINT
  37. INPUT"Start : UTC hours= ",H
  38. INPUT"             Mins= ",M
  39. T7=D8+H/24+M/1440
  40. T$=T$+FNT$(H)+FNT$(M)+":00"
  41. PRINT ''
  42. INPUT"duration hours= ",H1
  43. INPUT"          mins= ",M1:T8=T7+H1/24+M1/1440
  44.  PRINT ''
  45. INPUT "TIMESTEP: Min= ",M2:T9=M2/1440
  46. PRINT '
  47. PRINT "    from ",:PRINT USING"######.####";T7,:PRINT " to ";:PRINT USING"######.####";T8
  48. RESTORE Physicaldata:
  49. READ P1,C,R0,F,G0,G1
  50. P2=2*P1:P0=P1/180:F=1/F
  51. Getyear:
  52. READ Y1,G2:IF Y1=Y THEN statdata:
  53. IF Y1>0 THEN Getyear:
  54. IF Y1=0 THEN PRINT "UNABLE TO FIND YEAR:STOP
  55. statdata:
  56. RESTORE stationdata:
  57. READ L9,W9,H9,C$,E8
  58. GOSUB observerdata: PRINT''
  59. DEFDBL Q,K
  60. GOSUB pobsdata:
  61. PRINT "-------------satellite selection menu -------------------------"
  62. I=0:RESTORE keps:
  63. mnu:
  64. READ S$:IF S$="END" THEN choice: :ELSE READ I$:I=I+1
  65. PRINT "Entry # ";I;" for ";S$:PRINT "   ID= ";I$
  66. READ d,d,d,d,d,d,d,d,d,d,d,d,d,d : GOTO mnu:
  67. choice:
  68. INPUT "Select entry # ",J:RESTORE keps:
  69. IF J<1 OR J>I THEN choice:
  70. FOR I= 1 TO J:READ S$,I$,Y3,D3,H3,M3,S3
  71. READ K0,M0,N0,A0,I0,E0,W0,O0,F1:NEXT
  72. PRINT :PRINT  "Doppler calculated for frequency = ",F1," MHz "
  73. INPUT "Change frequency to (0 for default) ",d
  74. IF d<>0 THEN F1=d
  75. IF Y3=Y THEN 500 :ELSE PRINT "ELEMENTS NOT FROM CURRENT YEAR":STOP
  76. 500 IF D3=INT(D3) THEN T0=D3+H3/24+M3/1440+S3/86400 :ELSE T0=D3
  77. PRINT :PRINT "Orbital Elements for ";S$
  78. PRINT "    Reference Id.= ";I$:PRINT 
  79. PRINT "Reference Epoch = ";Y3;" + ";T0
  80. PRINT "Starting  Epoch = ";Y;" + ";T7;" = ";T$
  81. PRINT 
  82. PRINT "Parameter";SPC(9);"Reference";SPC(22);"Starting"
  83. T=T7
  84. GOSUB matrix: : GOSUB meananomoly: 
  85. PRINT "Orbit number ";SPC(10);K0;SPC(10);K
  86. PRINT "Mean Anomaly ";SPC(10);M0;SPC(10);M/P0
  87. PRINT "Inclination  ";SPC(10);I0
  88. PRINT "Eccentricity ";SPC(10);E0
  89. PRINT "Mean Motion  ";SPC(10);N0
  90. PRINT "S.M.A.,Km    ";SPC(10);A0
  91. PRINT "Arg.Perigee  ";SPC(10);W0;SPC(10);W
  92. PRINT " R. A. A. N. ";SPC(10);O0;SPC(10);O
  93. PRINT "Freq. Mhz.   ";SPC(10);F1
  94.  
  95. K9=5.47102e-315:K8=5.47102e-315:
  96.  
  97. maincomputationloop:
  98. FOR T=T7 TO T8 STEP T9:K7= INT(T):GOSUB meananomoly
  99. IF K=K9 THEN 720:GOSUB matrix::K8=5.47102e-315:K9=5.47102e-315
  100. 720 GOSUB Keplerseq: 
  101. GOSUB parameters: 
  102. IF E9<E8 THEN 830 
  103. IF K7=K8 AND K9=K THEN 770
  104. 730 IF K=K9 THEN 760 :ELSE GOSUB pager:
  105. K9=K
  106.  
  107. 740 PRINT " U.T.C.    AZ    EL   DOPPLER  RANGE    HEIGHT   LAT   LONG   PHASE"
  108. 750 PRINT "HHMM:SS   deg   deg      Hz      km         km   deg    deg   (256)"
  109. 760 PRINT SPC(10);"---DAY# ";K7;"---ORBIT # ";K;"----"
  110. 770 K8=K7:T4=T-K7:S4=INT(T4*86400 +0.5):H4=INT(S4/3600+1e-06)
  111. 780 M4=INT((S4-H4*3600)/60+1e-06):S4=INT(S4-3600*H4-60*M4)
  112. 790 T$=FNT$(H4)+FNT$(M4)+":"+FNT$(S4)
  113. 800 F9=-F1*1e+06*R8/C  : DEF FNI(d)=SGN(d)*INT(ABS(d)+0.5)
  114. 810 PRINT T$;:PRINT USING "######";FNI(A9);FNI(E9);:PRINT  USING"#######";FNI(F9);
  115. PRINT USING "#########";FNI(R5);FNI(R-R0);:PRINT  USING"######";FNI(L5);FNI(W5);M9
  116. 830 NEXT:PRINT : INPUT"PRESS RETURN TO CONTINUE:",d$:IF d$="s" THEN STOP
  117. GOTO 50
  118. pager:
  119. PRINT  C9$;C$;"  lat=";L9;"  W.Long=";W9;"  Ht. = "H9;
  120. P=P+1:PRINT SPC(10);" Pg.="P
  121. PRINT  SPC(10);"---MINIMUM ELEVATION= ";E8;"Deg.--"
  122. PRINT  :RETURN
  123.  
  124.  
  125. STOP
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132. observerdata:
  133. L8=L9*P0
  134. S9=SIN(L8)
  135. C9=COS(L8)
  136. S8=SIN(-W9*P0):C8=COS(W9*P0)
  137. R9=R0*(1-(F/2)+(F/2)*COS(2*L8))+H9/1000
  138. L8=ATN((1-F)^2*S9/C9):Z9=R9*SIN(L8)
  139. X9=R9*COS(L8)*C8:Y9=R9*COS(L8)*S8:RETURN
  140. pobsdata:
  141. PRINT C$;"   Lat.="L9;" W.Long.=";W9;"   ht.=";H9
  142. PRINT TAB(5)"---Minimum elevation -";E8;"Deg--"
  143. PRINT 
  144. RETURN
  145. matrix:
  146. IF N0>0.1 THEN A0=((G0/(N0^2))^(1/3))
  147. IF N0<=0.1 THEN N0=SQR(G0/(A0^3))
  148. E2=1-E0^2:E1=SQR(E2):Q0=M0/360+K0
  149. K2=9.95*((R0/A0)^3.5)/(E2^2)
  150. S1=SIN(I0*P0):C1=COS(I0*P0)
  151. O=O0-(T-T0)*K2*C1
  152. S0=SIN(O*P0)
  153.  C0=COS(O*P0)
  154. W=W0+(T-T0)*K2*(2.5 * (C1^2)-0.5)
  155. S2=SIN(W*P0)  
  156. C2=COS(W*P0)
  157. C(1,1)=+(C2*C0)-(S2*S0*C1) 
  158. C(1,2)=-(S2*C0)-(C2*S0*C1)
  159. C(2,1)=+(C2*S0)+(S2*C0*C1) 
  160. C(2,2)=-(S2*S0)+(C2*C0*C1)
  161. C(3,1)=+(S2*S1)           
  162. C(3,2)=+(C2*S1) : RETURN
  163. meananomoly:
  164. Q=N0*(T-T0)+Q0:K=INT(Q):M9=INT((Q-K)*256):M=(Q-K)*P2:RETURN
  165.  
  166.  
  167. keps:
  168. DATA "Cosmos 1766"
  169. DATA "LES"
  170. DATA 87,230.74062106,0,0,0
  171. DATA 999
  172. DATA 88.5386
  173. DATA 13.8338111720,0
  174. DATA 82.5567
  175. DATA 0.0011
  176. DATA 271.1364
  177. DATA 29.0651
  178. DATA 137.4
  179.  
  180. DATA "MIR"
  181. DATA "NASA"
  182. DATA 89,44.56559894,0,0,0
  183. DATA 17185
  184. DATA 89.2202
  185. DATA 15.71251869,0
  186. DATA 51.6221
  187. DATA 0.0011774
  188. DATA 270.7082
  189. DATA 266.8741
  190. DATA 143.625
  191.  
  192. DATA "METEOR 2/16"
  193. DATA "NASA"
  194. DATA 89,41.77348822,0,0,0
  195. DATA 7503
  196. DATA 174.0910
  197. DATA 13.83420134,0
  198. DATA 82.5593
  199. DATA 0.0011661
  200. DATA 186.0118
  201. DATA 319.7003
  202. DATA 137.850
  203.  
  204. DATA "METEOR 2/15"
  205. DATA "NASA"
  206. DATA 89,36.98407380,0,0,0
  207. DATA 10547
  208. DATA 88.0889
  209. DATA 13.8366481,0
  210. DATA 82.4678
  211. DATA 0.0012387
  212. DATA 271.8885
  213. DATA 259.0124
  214. DATA 137.85
  215.  
  216. DATA"NOAA-10"
  217. DATA"NASA"
  218. DATA 89,41.58262838,0,0,0
  219. DATA 12593
  220. DATA 102.3104
  221. DATA 14.2280426,0
  222. DATA 98.651
  223. DATA 0.0012704
  224. DATA 257.6903
  225. DATA 74.4169
  226. DATA 137.5
  227.  
  228. DATA "NOAA-9"
  229. DATA "NASA"
  230. DATA 88,22.06278960,0,0,0
  231. DATA 16019
  232. DATA 45.5306
  233. DATA 14.11545253,0
  234. DATA 99.0818
  235. DATA 0.0016
  236. DATA 314.4627
  237. DATA 354.8969
  238. DATA 137.62
  239.  
  240. DATA "METEOR 30"
  241. DATA "NASA"
  242. DATA 87,346.29912200,0,0,0
  243. DATA 40878
  244. DATA 72.8717
  245. DATA 14.98493528,0
  246. DATA 97.7216
  247. DATA 0.0041
  248. DATA 286.7977
  249. DATA 72.4335
  250. DATA 137.010
  251.  
  252. DATA "SALYUT 7"
  253. DATA "NASA"
  254. DATA 87,350.91797151,0,0,0
  255. DATA 32398
  256. DATA 207.1197
  257. DATA 15.31746328,0
  258. DATA 51.6122
  259. DATA 0.0001
  260. DATA 152.9965
  261. DATA 94.1426
  262. DATA 20.005
  263. DATA "END"                     
  264. 'ADD NEW DATA HERE EPOCH ORBIT MA MM INC ECC ARG RAAN FQ
  265.  
  266.  
  267.  
  268.  
  269. Physicaldata:
  270. DATA 3.1415926535,2.997925E5,6378.160,298.25:'PI/VEL LIGHT/RAD EARTH/FLATTENING
  271. DATA 7.5369793E13,1.0027379093:'GM OF EARTH/SID/SOLAR TIME
  272. siderealdata:
  273. DATA 86 ,.27
  274. DATA 87,0.2753552680
  275. DATA 88,0.2746921630
  276. DATA 89,0.2767669670
  277. DATA 90,0.2767669760
  278. DATA 0,0
  279. stationdata:
  280. ' Observers data   lat, long, height, call, min elevation
  281. DATA 51.268333,0.56333,,"G8NTH",1
  282.  
  283.  
  284.  
  285.  
  286. daysofyear:
  287. DATA 0,31,59,90,120,151,181,212,243,273,304,334,365
  288.  
  289. Keplerseq:
  290. E=M+E0*SIN(M)+0.5*(E0^2)*SIN(2*M)
  291. 10420 S3=SIN(E):C3=COS(E):R3=1-E0*C3:M1=E-E0*S3
  292. M5=M1-M:IF ABS(M5)<1e-06 THEN 10450 :ELSE E=E-M5/R3:GOTO 10420
  293. 10450 X0=A0*(C3-E0):Y0=A0*E1*S3:R=A0*R3
  294. X1=X0*C(1,1)+Y0*C(1,2):Y1=X0*C(2,1)+Y0*C(2,2):Z1=X0*C(3,1)+Y0*C(3,2)
  295. G7=T*G1+G2:G7=(G7-INT(G7))*P2:S7=-SIN(G7):C7=COS(G7)
  296. X=+(X1*C7)-(Y1*S7):Y=+(X1*S7)+(Y1*C7):Z=Z1:RETURN
  297.  
  298. parameters:
  299. X5=(X-X9):Y5=(Y-Y9):Z5=Z-Z9:R5=SQR(X5^2+Y5^2+Z5^2)
  300. IF T6<>T THEN R8=((R6-R5)/(T6-T))/86400 
  301. IF T6=T THEN R8 = -9e+09
  302. R6=R5:T6=T
  303. Z8=+(X5*C8*C9)+(Y5*S8*C9)+(Z5*C9)
  304. X8=-(X5*C8*S9)-(Y5*S8*S9)+(Z5*C9):Y8=(Y5*C8)-(X5*S8)
  305. S5=Z8/R5:C5=SQR(1-S5*S5):E9=ATN(S5/C5)/P0
  306. A9=ATN(Y8/X8)/P0
  307. W5=(ATN(Y/X))*57.3
  308. IF X<0 THEN W5=180-W5
  309. IF X>0 AND Y<0 THEN W5=-W5
  310. IF  X>0 AND Y>0 THEN W5=360-W5
  311. IF X=0 AND Y>=0 THEN W5=270
  312. IF X=0 AND Y<0 THEN W5=90
  313. IF X8<0 THEN A9=A9+180
  314. IF X8>0 AND Y8<0 THEN A9=360+A9
  315. IF X8=0 AND Y8>=0 THEN A9=90
  316. IF X8=0 AND Y8<0 THEN A9=270
  317. B5=Z/R:L5=ATN(B5/(SQR(1-B5^2)))/P0
  318. RETURN
  319.  
  320.  
  321.  
  322.